package com.fsl.sicotec.Datos;

import com.fsl.sicotec.comun.Interfaces.IdaoTecnico;
import com.fsl.sicotec.comun.Entidades.Tecnico;
import SG.Coneccion.Conecta;
import com.fsl.sicotec.comun.Entidades.Utiles;
import java.sql.*;
import java.util.ArrayList;

/**
 *
 * @author Proyecto SicoTec
 */
public class DaoTecnico implements IdaoTecnico {
    // Varibles para las Transacciones

    Connection cn = null;
    CallableStatement cs = null;
    ResultSet rs = null;
    Tecnico objtecnico = null;
    ArrayList<Tecnico> arrTecnicos = new ArrayList<Tecnico>();
    ArrayList<Tecnico> arrTecnico = new ArrayList<Tecnico>();
//final

// <editor-fold defaultstate="collapsed" desc="Métodos para escribir en BBDD">
    public void registrarTecnico(Tecnico objTecnico) {
        try {
            cn = new Conecta().getConexion();
            cs = cn.prepareCall("{call sp_si_tecnico_registrar (?,?,?,?,?,?,?,?)}");
            cs.setString(1, objTecnico.getDni());
            cs.setString(2, objTecnico.getApe_paterno());
            cs.setString(3, objTecnico.getApe_materno());
            cs.setString(4, objTecnico.getNombres());
            cs.setString(5, objTecnico.getDireccion());
            cs.setString(6, objTecnico.getTelefono());
            cs.setString(7, Utiles.getUsuario());
            cs.setString(8, Utiles.getTerminal());
            cs.execute();
            cs.close();
            cn.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }

    public ArrayList<Tecnico> getTecnicos() {
        try {
            cn = new Conecta().getConexion();
            cs = cn.prepareCall("{call sp_si_tecnico_seleccionar }");
            rs = cs.executeQuery();
            while (rs.next()) {
                Tecnico objTecnico = new Tecnico();
                objTecnico.setCod_tecnico(rs.getString("icod_tecnico"));
                objTecnico.setDni(rs.getString("cdni"));
                objTecnico.setApe_paterno(rs.getString("vape_paterno"));
                objTecnico.setApe_materno(rs.getString("vape_materno"));
                objTecnico.setNombres(rs.getString("vnombres"));
                objTecnico.setTelefono(rs.getString("cTelefono"));
                objTecnico.setDireccion(rs.getString("vDireccion"));
                arrTecnicos.add(objTecnico);
            }
            return arrTecnicos;
        } catch (SQLException ex) {
            ex.printStackTrace();
            return null;
        }
    }

    public ArrayList<Tecnico> getTecnico(String strDNI) {
        try {
            cn = new Conecta().getConexion();
            cs = cn.prepareCall("{call sp_si_tecnico_seleccionarpordni(?) }");
            cs.setString(1, strDNI);
            rs = cs.executeQuery();
            while (rs.next()) {
                Tecnico objTecnico = new Tecnico();
                objTecnico.setCod_tecnico(rs.getString("icod_tecnico"));
                objTecnico.setDni(rs.getString("cdni"));
                objTecnico.setApe_paterno(rs.getString("vape_paterno"));
                objTecnico.setApe_materno(rs.getString("vape_materno"));
                objTecnico.setNombres(rs.getString("vnombres"));
                objTecnico.setTelefono(rs.getString("cTelefono"));
                objTecnico.setDireccion(rs.getString("vDireccion"));
                arrTecnico.add(objTecnico);
            }
            return arrTecnico;
        } catch (SQLException ex) {
            ex.printStackTrace();
            return null;
        }
    }

    public void actualizarTecnico(String strDNI, Tecnico objTecnico) {
        try {
            cn = new Conecta().getConexion();
            cs = cn.prepareCall("{call sp_si_tecnico_actualizar (?,?,?,?,?,?,?,?)}");
            cs.setString(1, strDNI);
            cs.setString(2, objTecnico.getApe_paterno());
            cs.setString(3, objTecnico.getApe_materno());
            cs.setString(4, objTecnico.getNombres());
            cs.setString(5, objTecnico.getDireccion());
            cs.setString(6, objTecnico.getTelefono());
            cs.setString(7, Utiles.getUsuario());
            cs.setString(8, Utiles.getTerminal());
            cs.executeUpdate();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }

    public void eliminarTecnico(String strDNI) {
        try {
            cn = new Conecta().getConexion();
            cs = cn.prepareCall("{call sp_si_tecnico_eliminar(?,?,?)}");
            cs.setString(1, strDNI);
            cs.setString(2, Utiles.getUsuario());
            cs.setString(3, Utiles.getTerminal());
            cs.executeUpdate();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
// </editor-fold>
}
